//
//  WBWelcomeView.swift
//  仿微博
//
//  Created by apple on 2016/12/26.
//  Copyright © 2016年 apple. All rights reserved.
//

import UIKit
import SDWebImage
/// 欢迎视图
class WBWelcomeView: UIView {

    @IBOutlet weak var iconView: UIImageView!
    @IBOutlet weak var tipLable: UILabel!
    @IBOutlet weak var bottomCons: NSLayoutConstraint!
    /// 图标宽度约束
      @IBOutlet weak var iconWidthCons: NSLayoutConstraint!
    /// 欢迎视图
    class func welcomeView() -> WBWelcomeView {
         let nib = UINib(nibName: "WBWelcomeView", bundle: nil)
        
        let v = nib.instantiate(withOwner: nil, options: nil)[0] as! WBWelcomeView
        // 从 XIB 加载的视图 ，默认是 600 * 600 的
        v.frame = UIScreen.main.bounds
        return v
    
    
    }
    
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        // 提示：initWithCode 只是刚刚从 XIB 的二进制文件将视图数据加载完成
        // 还没有和代码连线建立起关系，所以开发时，千万不要在这个方法中处理 UI
         print("initWithCoder + \(iconView)")
    }
    
    //从 XIB 加载完成调用
    override func awakeFromNib() {
       
        //1.url
        guard let urlString = WBNetworkManager.shared().userAccount.avatar_large,
        let url = URL(string: urlString)
        
        else {
            return
        }
        
        //3. 设置圆角(iconView 的 bounds 还没有设置)
        iconView.layer.cornerRadius = iconWidthCons.constant * 0.5 //iconView.bounds.width * 0.5
//        iconView.layer.cornerRadius = 42.5
       iconView.layer.masksToBounds = true
        
        //2.设置头像  - 如果网络图像没有下载完成， 先显示占位图像
        //如果不指定占位图像，之前设置的图像会被清空！
        
        iconView.sd_setImage(with: url, placeholderImage:UIImage(named: "avatar_default_big") )
        

        
    }
    
    //========//
    /// 将给定的图像进行拉伸，并且返回“新”的图像
    ///
    
    /// - Returns: UIImage
    func avatarImage(image: UIImage, size: CGSize, backColor: UIColor?) -> UIImage? {
        
        
        let rect = CGRect(origin: CGPoint(), size: size)
        
        //  1.图像的上下文 - 内存中开辟一个地址，跟屏幕无关
        /*
         参数:
         
         1.size:   绘图的尺寸
         2.不透明:  false(透明)/true(不透明)
         3.scale:  屏幕的分辨率 ,默认是1.0 图像质量不好的 ,可以指定 0, 会选择当前设备的屏幕分辨率
         
         */
        UIGraphicsBeginImageContextWithOptions(rect.size, true, 0)
        //0> 背景填充
        backColor?.setFill()
        UIRectFill(rect)
        //1>实例 化 一个人圆形的路径
        let path = UIBezierPath(ovalIn: rect)
        //2>进行路径裁切 - 后续的绘图，
        path.addClip()
        //3> 绘制内切 的圆形
        UIColor.darkGray.setStroke()
        path.lineWidth = 2
        path.stroke()
        
        
        // 2.绘图 drawInRect 就是在指定区域内拉伸屏幕
        image.draw(in: rect)
        // 3.取得结果
        let result = UIGraphicsGetImageFromCurrentImageContext()
        // 4.关闭上下文
        UIGraphicsEndImageContext()
        // 5.返回结果
        return result
        
        
        
    }

    
    
    
    
    //=========//
    
    /// 自动布局系统更新完成约束后，会自动调用此方法
    /// 通常是对子视图布局进行修改
    //    override func layoutSubviews() {
    //
    //    }

    
    /// 视图被添加到 window 上，表示视图已经显示
    override func didMoveToWindow() {
        super.didMoveToWindow()
        
        // 视图是使用自动布局来设置的，只是设置了约束
        // - 当视图被添加到窗口上时，根据父视图的大小，计算约束值，更新控件位置
        // - layoutIfNeeded 会直接按照当前的约束直接更新控件位置
        // - 执行之后，控件所在位置，就是 XIB 中布局的位置

        self.layoutIfNeeded()
        bottomCons.constant = bounds.height - 200
        
        // 如果控件们的 frame 还没有计算好！所有的约束会一起动画！
    UIView.animate(withDuration: 1.0, delay: 0, usingSpringWithDamping: 0.6, initialSpringVelocity: 0, options: [], animations: {
        // 更新约束
        self.layoutIfNeeded()
    }) { (_) in
      UIView.animate(withDuration: 1.0, animations: { 
        self.tipLable.alpha = 1
      }, completion: { (_) in
   self.removeFromSuperview()
      })
        }
    }
}
